Response Compression Middleware হলো ASP.NET Core এর একটি বিল্ট-ইন ফিচার, যা সার্ভার থেকে ক্লায়েন্টে পাঠানো ডেটার আকার কমিয়ে অ্যাপ্লিকেশনের পারফরম্যান্স বাড়ায়। এটি HTTP রেসপন্সের আকার কমাতে gzip, brotli, বা custom compression providers ব্যবহার করে।
Response Compression Middleware কেন ব্যবহার করবেন?
- ডেটা আকার হ্রাস: কমপ্রেসড রেসপন্সের ফলে ব্যান্ডউইথ কম লাগে।
- লোড টাইম কমানো: ক্লায়েন্ট দ্রুত রেসপন্স পায়, ফলে পেজ লোড টাইম কমে।
- কস্ট কমানো: ক্লাউড বা সার্ভার ব্যান্ডউইথ কস্ট কমায়।
- ব্যবহারকারীর অভিজ্ঞতা উন্নত করে।
Response Compression Middleware সেটআপ করার ধাপসমূহ
১. NuGet প্যাকেজ যোগ করা
ASP.NET Core এর জন্য Microsoft.AspNetCore.ResponseCompression NuGet প্যাকেজ ইন্সটল করুন:
dotnet add package Microsoft.AspNetCore.ResponseCompression
২. Middleware যোগ করা
Middleware যোগ করার জন্য Program.cs ফাইল আপডেট করুন:
var builder = WebApplication.CreateBuilder(args);
// Response Compression Middleware সেবায় যুক্ত করা
builder.Services.AddResponseCompression(options =>
{
options.Providers.Add<GzipCompressionProvider>(); // gzip যোগ করা
options.Providers.Add<BrotliCompressionProvider>(); // brotli যোগ করা
options.EnableForHttps = true; // HTTPS এর জন্য Compression চালু করা
});
// Compression Level সেট করা (Advanced Configuration)
builder.Services.Configure<BrotliCompressionProviderOptions>(options =>
{
options.Level = System.IO.Compression.CompressionLevel.Fastest;
});
builder.Services.Configure<GzipCompressionProviderOptions>(options =>
{
options.Level = System.IO.Compression.CompressionLevel.SmallestSize;
});
var app = builder.Build();
// Response Compression Middleware অ্যাপ্লিকেশনে যুক্ত করা
app.UseResponseCompression();
app.MapGet("/", () => "This is a compressed response!");
app.Run();
Compression Providers
১. Gzip Compression
Gzip হলো সবচেয়ে জনপ্রিয় এবং সমর্থিত কমপ্রেশন পদ্ধতি। এটি সহজে কনফিগারযোগ্য এবং ব্রাউজার দ্বারা সমর্থিত।
options.Providers.Add<GzipCompressionProvider>();
২. Brotli Compression
Brotli একটি আধুনিক কমপ্রেশন অ্যালগরিদম, যা gzip এর চেয়ে আরও ভালো কমপ্রেশন সরবরাহ করে।
options.Providers.Add<BrotliCompressionProvider>();
৩. Custom Compression Provider
আপনার নিজস্ব কমপ্রেশন প্রোভাইডার তৈরি করতে:
public class CustomCompressionProvider : ICompressionProvider
{
public string EncodingName => "custom";
public bool SupportsFlush => true;
public Stream CreateStream(Stream outputStream)
{
// Custom compression logic
return outputStream;
}
}
Middleware-এ প্রোভাইডার যোগ করুন:
options.Providers.Add<CustomCompressionProvider>();
কনফিগারেশন অপশন
১. EnableForHttps
HTTPS রেসপন্স কমপ্রেসড করতে EnableForHttps সক্রিয় করুন। ডিফল্টভাবে এটি বন্ধ থাকে।
options.EnableForHttps = true;
২. MimeTypes
কোন ধরনের কন্টেন্ট কমপ্রেস করা হবে তা নির্ধারণ করতে:
options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(new[]
{
"application/json",
"text/css",
"image/svg+xml"
});
৩. CompressionLevel
Compression Level নির্ধারণ করে ডেটা কম্প্রেশন ও পারফরম্যান্সের মধ্যে ভারসাম্য বজায় রাখা যায়:
- Fastest: দ্রুত কম্প্রেশন।
- Optimal: ব্যালান্সড কম্প্রেশন।
- SmallestSize: সর্বোচ্চ কম্প্রেশন।
Middleware এর কার্যপ্রক্রিয়া
- রিকোয়েস্ট যাচাই করা: ক্লায়েন্টের
Accept-Encodingহেডার পরীক্ষা করা হয়। - প্রোভাইডার নির্বাচন: সমর্থিত কমপ্রেশন প্রোভাইডার বেছে নেওয়া হয়।
- কমপ্রেসড রেসপন্স পাঠানো: কমপ্রেসড ডেটা ক্লায়েন্টে পাঠানো হয়।
ডিবাগ এবং পরীক্ষা
১. ব্রাউজার Developer Tools ব্যবহার করে পরীক্ষা করা
- Headers ট্যাবে যান।
Content-Encodingহেডার চেক করুন (e.g., gzip, br)।
২. cURL কমান্ড ব্যবহার করে পরীক্ষা করা
curl -H "Accept-Encoding: gzip" https://localhost:5001
Response Compression Middleware এর সুবিধা
- পারফরম্যান্স উন্নত করা: কমপ্রেসড রেসপন্স দ্রুত ক্লায়েন্টে পৌঁছে।
- ব্যান্ডউইথ সাশ্রয়: কম ডেটা পাঠানোর কারণে ব্যান্ডউইথ কম খরচ হয়।
- সহজ কনফিগারেশন: কয়েকটি লাইন কোড ব্যবহার করেই কমপ্রেশন সক্ষম করা যায়।
Response Compression Middleware ASP.NET Core অ্যাপ্লিকেশনের পারফরম্যান্স এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করার একটি শক্তিশালী টুল। এটি সহজে কনফিগারযোগ্য এবং HTTPS সহ সব ধরনের পরিবেশে কার্যকর।
Read more